<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //  new Promise(
        //     (resolve,reject)=>{
        //     console.log('1');
        //  } 1.注掉的就是执行器函数 executor函数:执行器(resolve,reject)=>{}

        //  )

        //2.Promise.prototype.then方法:(onResolved,onReject)=>{}
        // const p = new Promise((resolve, reject) => {
        //     resolve('我是value')
        //     reject('我是错误')
        // }).then(value => {
        //     console.log(value);//返回的是一个新的Promise对象
        // }, reason => {
        //     console.log(reason);//返回的是一个新的Promise对象
        // })

        // 3:catch方法是只用于处理失败的回调 内部也是用then方法封装实现的
        // const p = new Promise((resolve, reject) => {
        //     reject('我是错误')
        // }).catch((resoan)=>{
        //     console.log(resoan);
        // })

        // 4.Promise.resolve方法:(value)=>{}
        //  console.log('2');
        //     let p = Promise.resolve(new Promise((resolve,reject)=>{
        //         reject('失败')
        //     }))
        //    console.log(p);

        // 5.Promise.reject方法:(reason)=>{}
        // let p1 = Promise.reject(new Promise((resolve,reject)=>{
        //     resolve('我是resolve,我被迫失败了')
        // }))
        // console.log(p1);
        //从Promise.reject方法的角度来看它就是一个reject(失败)状态,无论你内部做了什么返回了什么,都是不可逆的

        // 6.Promise.all方法:(promise)=>{}
        // (1)promise:包含n个promise的数组
        //  说明:返回一个新的promise,只要所有的promise都成功才成功,只要有一个失败了就直接失败
        // let p1 = Promise.resolve(new Promise((resolve, reject) => {
        //     resolve('ok')
        // }))
        // let p2 = Promise.resolve('成功')
        // let p3 = Promise.resolve('yes')
        // const reslut = Promise.all([p1, p2, p3])
        // console.log(reslut);


    //     7. Promise.race方法:(promise)=>{}
    // (1)promise:包含n个promise的数组
    //  说明:返回一个新的promise,第一个完成的promise的结果状态就是最终的结果状态
    //  如何判断第一个完成的: 同步任务>异步任务==>在判断同步任务的执行上下文顺序就可判断出第一个完成的promise
        let p1 = Promise.resolve(new Promise((resolve, reject) => {
            // resolve('ok')
              setTimeout(()=>{
                resolve('ok')
              },1000)
        }))
        let p2 = Promise.resolve('成功')
        let p3 = Promise.resolve('yes')
        const reslut = Promise.race([p1, p2, p3])
        console.log(reslut);


    </script>
</body>

</html>